#ifndef __BLOCKS_HH__
#define __BLOCKS_HH__

#include <mc/types.h>
#include <mc/block.h>
#include <string>

namespace mc
{

/////////////////////// 一种纹理方块子类实现 ////////////////////
// 泥土
CREATE_BLOCK(Dirt, OneTextureBlock, 1);
// 石头
CREATE_BLOCK(Stone, OneTextureBlock, 1);

/////////////////////// 两种纹理方块子类实现 ////////////////////
// 橡木
CREATE_BLOCK(OakLog, ThreeTexturesBlock, 3);

/////////////////////// 三种纹理方块子类实现 ////////////////////
// 草地
CREATE_OVERRIDE_DRAW_BLOCK(Grass, ThreeTexturesBlock, 3);

// TNT
CREATE_BLOCK(Tnt, ThreeTexturesBlock, 3);

// 活塞
CREATE_BLOCK(Piston, ThreeTexturesBlock, 3);

/////////////////////// 四种纹理方块子类实现 ////////////////////
// 工作台
CREATE_BLOCK(CraftingTable, FourTexturesBlock, 4);

class BlockFactory
{
public:
    //! @brief 获取方块
    static Block* getBlock(BlockType type);

    //! @brief 加载方块纹理
    static void loadAllBlockTextures();
};

}

#endif